﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tipler.Siniflar;
using Tipler.Enumlar;
using Tipler.DataSetler;
using DataServis;
using System.Data;

namespace IsKurallari.Duyuru
{
    public class DuyuruIsKurali : TemelIsKurali
    {
        #region Duyuru Modülü Iskurallari

        public FonksiyonSonuc<DuyuruDataSet> DuyuruKaydet(DuyuruDataSet dsDuyuru)
        {
            FonksiyonSonuc<DuyuruDataSet> Sonuc = new FonksiyonSonuc<DuyuruDataSet>();

            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsDuyuru);
                Sonuc.Sonuc = dsDuyuru;
            }
            catch (Exception ex)
            {
                Sonuc.Sonuc = null;
                Sonuc.Ex = ex;
                Sonuc.Hata = dsDuyuru.Duyuru.TableName + " kaydedilemedi.";
                Sonuc.HataKod = "70001";
            }
            return Sonuc;
        }

        public FonksiyonSonuc<DuyuruDataSet> DuyuruGetir()
        {
            FonksiyonSonuc<DuyuruDataSet> Sonuc = new FonksiyonSonuc<DuyuruDataSet>();
            DuyuruDataSet SonucDataSet = new DuyuruDataSet();
            VeriArabirim oVeriKatmani = null;
            StringBuilder sb = new StringBuilder();

            try
            {
                oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                sb.Append(@"SELECT * FROM " + SonucDataSet.Duyuru.TableName);
                sb.Append(" WHERE ");
                sb.Append(SonucDataSet.Duyuru.ISDeletedColumn.ColumnName + "=" + KayitDurumu.Kayitli.GetHashCode());
                sb.Append(" ORDER BY " + SonucDataSet.Duyuru.Bas_TarColumn.ColumnName);

                oVeriKatmani.VeriGetir(SonucDataSet, sb.ToString());
                Sonuc.Sonuc = SonucDataSet;
            }
            catch (Exception ex)
            {
                Sonuc.Ex = ex;
                Sonuc.Hata = Sonuc.Sonuc.Duyuru.TableName + "'dan veri okunamadı.";
                Sonuc.HataKod = "10001";
            }
            return Sonuc;
        }

        public FonksiyonSonuc<DuyuruDataSet> DuyuruGetir(int nDuyuruID)
        {
            FonksiyonSonuc<DuyuruDataSet> oSonuc = new FonksiyonSonuc<DuyuruDataSet>();
            DuyuruDataSet ds = new DuyuruDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("DuyuruID", DbType.Int32, nDuyuruID));

                oVeriKatmani.VeriGetir(ds, "SELECT * FROM " + oSonuc.Sonuc.Duyuru.TableName + " WHERE " + oSonuc.Sonuc.Duyuru.IDColumn.ColumnName + "= " + PrmSgn + "DuyuruID", pParams);
                oSonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                oSonuc.Ex = ex;
                oSonuc.Hata = oSonuc.Sonuc.Duyuru.TableName + "'dan veri okunamadı.";
                oSonuc.HataKod = "10001";
            }
            return oSonuc;
        }

        public FonksiyonSonuc<DuyuruDataSet> AktifDuyuruGetir()
        {
            FonksiyonSonuc<DuyuruDataSet> Sonuc = new FonksiyonSonuc<DuyuruDataSet>();
            DuyuruDataSet SonucDataSet = new DuyuruDataSet();
            VeriArabirim oVeriKatmani = null;
            StringBuilder sb = new StringBuilder();

            try
            {
                oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("ISDELETED", DbType.Int32, KayitDurumu.Kayitli.GetHashCode()));
                pParams.Add(oVeriKatmani.CreateParameter("BAS_TAR", DbType.DateTime, DateTime.Now.Date));
                pParams.Add(oVeriKatmani.CreateParameter("BIT_TAR", DbType.DateTime, DateTime.Now.Date));


                sb.Append(@"SELECT * FROM Duyuru ");
                sb.Append(" WHERE ISDELETED = " + PrmSgn + "ISDELETED");
                sb.Append(" AND BAS_TAR <= " + PrmSgn + "BAS_TAR");
                sb.Append(" AND BIT_TAR >= " + PrmSgn + "BIT_TAR");
                sb.Append(" ORDER BY BAS_TAR");

                oVeriKatmani.VeriGetir(SonucDataSet, sb.ToString(), pParams);
                Sonuc.Sonuc = SonucDataSet;
            }
            catch (Exception ex)
            {
                Sonuc.Ex = ex;
                Sonuc.Hata = Sonuc.Sonuc.Duyuru.TableName + "'dan veri okunamadı.";
                Sonuc.HataKod = "10001";
            }
            return Sonuc;

        }

        public FonksiyonSonuc<DuyuruDataSet> KosulluDuyuruGetir(string BasTar, string BitTar, int? AKTIFMI)
        {
            FonksiyonSonuc<DuyuruDataSet> Sonuc = new FonksiyonSonuc<DuyuruDataSet>();

            List<IDbDataParameter> oParametreler = new List<IDbDataParameter>();
            VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

            DuyuruDataSet SonucDataSet = new DuyuruDataSet();
            StringBuilder sb = new StringBuilder();

            try
            {
                oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                sb.Append(@"SELECT * FROM " + SonucDataSet.Duyuru.TableName);
                sb.Append(" WHERE ");
                sb.Append(SonucDataSet.Duyuru.ISDeletedColumn.ColumnName + "=" + KayitDurumu.Kayitli.GetHashCode().ToString());

                if (!string.IsNullOrEmpty(BasTar.ToString()))
                {
                    sb.Append(" AND " + SonucDataSet.Duyuru.Bas_TarColumn.ColumnName + ">=" + PrmSgn + "BasTar");
                    oParametreler.Add(oVeriKatmani.CreateParameter("BasTar", DbType.DateTime, BasTar));
                }
                if (!string.IsNullOrEmpty(BitTar.ToString()))
                {
                    sb.Append(" AND " + SonucDataSet.Duyuru.Bit_TarColumn.ColumnName + "<=" + PrmSgn + "BitTar");
                    oParametreler.Add(oVeriKatmani.CreateParameter("BitTar", DbType.DateTime, BitTar));
                }

                if (AKTIFMI.HasValue && AKTIFMI != -1)
                {
                    sb.Append(" AND " + SonucDataSet.Duyuru.AktifColumn.ColumnName + "=" + PrmSgn + "AKTIF");
                    oParametreler.Add(oVeriKatmani.CreateParameter("AKTIF", DbType.Int32, AKTIFMI));
                }

                oVeriKatmani.VeriGetir(SonucDataSet, sb.ToString(), oParametreler);
                Sonuc.Sonuc = SonucDataSet;
            }
            catch (Exception ex)
            {
                Sonuc.Ex = ex;
                Sonuc.Hata = Sonuc.Sonuc.Duyuru.TableName + "'dan veri okunamadı.";
                Sonuc.HataKod = "10001";
            }
            return Sonuc;
        }

        #endregion
    }
}
